﻿using System;
using System.Linq;
using System.Collections.Generic;
using PSE.Tools.Util.ExtensoesMetodos;
using PSE.Tools.Util.AcessoDados;
using System.Text;
using System.Data;
//using PSE.Tools.CadastroProdutos.Entidades;
namespace PSE.Tools.CadastroMensagens.AcessoDados
{
    /// <summary>
    /// Classe que persiste as informações de Usuário
    /// </summary>
    public class Usuario : ResourceAccess
    {
        #region [ Métodos ]

        /// <summary>
        /// Obtém um Usuário pelo Login
        /// </summary>
        /// <param name="login">Login do Usuário</param>
        public Entidades.Usuario ObterPorLogin(string login)
        {
            StringBuilder sql = new StringBuilder();
            sql.Append(@"
            SELECT 
                COD_USUA,
                NOME_USUA,
                NOME_LOGN
            FROM 
                TFWDUSUA
            WHERE 
                LOWER(NOME_LOGN) = :NOME_LOGN ");

            IList<Entidades.Usuario> usuario;

            using (IDbCommand command = this.GetSqlStringCommand(sql.ToString()))
            {
                this.AddInParameter(command, "NOME_LOGN", DbType.String, login);
                usuario = this.FindAll<Entidades.Usuario>(command,
                    i => new Entidades.Usuario()
                    {
                        Id = i.GetValue<int>("COD_USUA"),
                        Login = i.GetValue<string>("NOME_USUA"),
                        Nome = i.GetValue<string>("NOME_LOGN")
                    }
                );
            }
            return usuario.FirstOrDefault();
        }

        #endregion [ Métodos ]
    }
}
